Установка dovecot-sieve сервер для фильтрации почтовых сообщений.
Проверка версии dovecot
/usr/syno/mailstation/sbin/dovecot --version
Сейчас установлена 1.1.6
Потребуется:
1.Установленный ipkg
2.Компилятор gcc
Установка
1.Обновляем список пакетов:
ipkg update
2.Устанавливаем библиотеки для компиляции:
ipkg install optware-devel
ipkg install libdb
3.Скачиваем и распаковываем дистрибутивы dovecot и sieve
cd /volume1/tmp
wget http://www.dovecot.org/releases/1.1/dovecot-1.1.6.tar.gz
wget http://www.dovecot.org/releases/sieve/dovecot-sieve-1.1.6.tar.gz
gzip -d ./dovecot-1.1.6.tar.gz
tar xfv ./dovecot-1.1.6.tar
gzip -d ./dovecot-sieve-1.1.6.tar.gz
tar xfv ./dovecot-sieve-1.1.6.tar
Версии релизов смотрите тут: http://www.dovecot.org/releases/
4.Компилируем
cd /volume1/tmp/dovecot-1.1.6
./configure && make
cd /volume1/tmp/dovecot-sieve-1.1.6
./configure --with-dovecot=../dovecot-1.1.6
make
5.Создаем папку библиотек и копируем модули, которые собрали:
mkdir -p /lib/dovecot/lda
cp /volume1/tmp/dovecot-sieve-1.1.6/src/.libs/lib90_cmusieve_plugin.la /lib/dovecot/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/.libs/lib90_cmusieve_plugin.lai /lib/dovecot/lda/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/.libs/lib90_cmusieve_plugin.a /lib/dovecot/lda/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/.libs/lib90_cmusieve_plugin.la /lib/dovecot/lda/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/.libs/lib90_cmusieve_plugin.so /lib/dovecot/lda/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/libsieve/sievec /usr/syno/mailstation/libexec/dovecot/
cp /volume1/tmp/dovecot-sieve-1.1.6/src/libsieve/sieved /usr/syno/mailstation/libexec/dovecot/
6.Компилируем локальный агент доставки:
cd /volume1/tmp/dovecot-1.1.6/src/deliver
make install deliver
cp ./deliver /usr/syno/mailstation/libexec/dovecot
ln -s /usr/syno/mailstation/etc/dovecot.conf /usr/local/etc/dovecot.conf
7.Настраиваем конфигурацию
Файл конфигурации Dovecot хранится тут:
/usr/syno/mailstation/etc/dovecot.conf
Открываем его и редактируем раздел protocol lda, вот что примерно должно получиться:
##
## LDA specific settings
##
protocol lda {
# Address to use when sending rejection mails.
postmaster_address = [email protected]
# Hostname to use in various parts of sent mails, eg. in Message-Id.
# Default is the system's real hostname.
hostname = domain.ru
# Support for dynamically loadable plugins. mail_plugins is a space separated
# list of plugins to load.
mail_plugins = cmusieve
mail_plugin_dir = /usr/lib/dovecot/lda
# If user is over quota, return with temporary failure instead of
# bouncing the mail.
#quota_full_tempfail = no
# Format to use for logging mail deliveries. You can use variables:
# %$ - Delivery status message (e.g. "saved to INBOX")
# %m - Message-ID
# %s - Subject
# %f - From address
#deliver_log_format = msgid=%m: %$
# Binary to use for sending mails.
#sendmail_path = /usr/lib/sendmail
# Human readable error message for rejection mails. Use can use variables:
# %n = CRLF, %r = reason, %s = subject, %t = recipient
#rejection_reason = Your message to <%t> was automatically rejected:%n%r
# UNIX socket path to master authentication server to find users.
#auth_socket_path = /var/run/dovecot/auth-master
}
исправьте соответствующие поля с учетом настроек вашего сервера
¦postmaster_address = [email protected]
¦hostname = domain.ru
?Postfix
Откройте конфиг Postfix, который лежит тут:
/usr/syno/mailstation/etc/main.cf
Снимаем комментарий с ключа mailbox_command и указываем следующее значение:
mailbox_command = /usr/syno/mailstation/libexec/dovecot/deliver
Не забудьте перезапустить Postfix!
/usr/local/etc/rc.d/MailStation.sh restart
Создадим файл сортировки почты .dovecot.sieve в домашней папке пользователя, там же, где лежит .Maildir, например:
/volume1/homes/user
Пример содержимого файла:
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "subject" "*****SPAM*****" {
fileinto "Junk";
stop;
} else {
keep;
}
Письма, в заголовке которых встречается текст "*****SPAM*****", будут перемещаться в папку со СПАМом .Junk
Всё прекрасно работает.
Инструкцию писал для себя, поэтому версия установленного dovecot может быть другая.
Смысл фильтра для меня заключался в том ,чтобы сборщик писем раскладывал письма с разных ящиков в свои папки.